热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

R`+`运算符如何根据类而知道不同的行为?

如何解决《R`+`运算符如何根据类而知道不同的行为?》经验,为你挑选了1个好方法。

这是lubridate包装中的一种方法。

> getMethod("month<-")
Method Definition (Class "derivedDefaultMethod"):

  function (x, value)
  {
    if (!is.numeric(value)) {
      value <- pmatch(tolower(value), c("january", "february",
                                        "march", "june", "july", "august", "september", "october",
                                        "november", "december"))
    }
    x <- x + months(value - month(x))
  }

我的问题是+运算符的最后一行。运算符的行为取决于的类别x。R如何知道要这样做?我如何查看其源代码+

> library(lubridate)
> 
> customFUN <- function (x, value){
+   x <- x + months(value - month(x))
+   return(x)
+ }
> 
> 
> init_datePOSIX <- as.POSIXct("2017-11-01")
> init_dateDate <- as.Date("2017-11-01")
> 
> customFUN(init_datePOSIX, 12)
[1] "2017-11-01 PDT"
> customFUN(init_dateDate, 12)
[1] "2017-12-01"

我的会话信息:

> sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MOnETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHOnE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lubridate_1.7.1

loaded via a namespace (and not attached):
[1] magrittr_1.5  tools_3.3.3   yaml_2.2.0    Rcpp_1.0.0    stringi_1.3.2 stringr_1.3.1

zacdav.. 5

+运营商真的就像任何其他的功能,并能作这样的处理。

您可以+通过键入以下内容查看源代码:

`+`

此外,您可以+通过键入以下命令查看各种方法:

methods(`+`)

调用函数时,将检查对象的类以查看应调用的方法。当存在多个类时,第一个匹配方法将从这些类中获取。

因此,您可以定义自己的方法 +

`+.custom` <- function(e1, e2) {
  paste0(e1, e2)
}

x <- 1
class(x) <- c("custom", "numeric")

x + x

在这里,我们覆盖了x要添加其他类的类"custom",您可以看到该行为默认为新定义的+.custom

但是,该值对于其他尚未定义的方法仍然可以正常使用(数字),请尝试以下代码:

x / 10 * 500

其他阅读: https : //stat.ethz.ch/R-manual/R-patched/library/base/html/UseMethod.html



1> zacdav..:

+运营商真的就像任何其他的功能,并能作这样的处理。

您可以+通过键入以下内容查看源代码:

`+`

此外,您可以+通过键入以下命令查看各种方法:

methods(`+`)

调用函数时,将检查对象的类以查看应调用的方法。当存在多个类时,第一个匹配方法将从这些类中获取。

因此,您可以定义自己的方法 +

`+.custom` <- function(e1, e2) {
  paste0(e1, e2)
}

x <- 1
class(x) <- c("custom", "numeric")

x + x

在这里,我们覆盖了x要添加其他类的类"custom",您可以看到该行为默认为新定义的+.custom

但是,该值对于其他尚未定义的方法仍然可以正常使用(数字),请尝试以下代码:

x / 10 * 500

其他阅读: https : //stat.ethz.ch/R-manual/R-patched/library/base/html/UseMethod.html


`help(“ groupGeneric”)`也很重要。
推荐阅读
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文介绍了如何查看PHP网站及其源码的方法,包括环境搭建、本地测试、源码查看和在线查找等步骤。 ... [详细]
  • 如何在 Python 列表中添加元素 [Python 基础]
    本文介绍了 Python 中常用的三种方法来向列表中添加元素:`append()`、`extend()` 和 `insert()`。这些方法分别适用于不同的场景,帮助开发者灵活地管理列表数据。 ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • 如何配置VisualSVN以确保提交时必须填写日志信息
    在软件开发团队中,成员们有时会忘记在提交代码时添加必要的备注信息。为了规范这一流程,可以通过配置VisualSVN来强制要求团队成员在提交文件时填写日志信息。本文将详细介绍如何设置这一功能。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • 本文介绍 DB2 中的基本概念,重点解释事务单元(UOW)和事务的概念。事务单元是指作为单个原子操作执行的一个或多个 SQL 查询。 ... [详细]
  • 本文详细介绍了区块链系统的架构,并附有清晰的架构图,帮助读者更好地理解区块链的工作原理和技术细节。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • Nvidia Ansel 工具为 PC 玩家提供了便捷的高精度图像采集和分享功能。本文介绍了如何将 Ansel 插件集成到虚幻引擎 4 (UE4) 游戏中,并详细说明了其主要功能和系统要求。 ... [详细]
author-avatar
mobiledu2502926037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有